Reduce call to strlen when possible#5192
Reduce call to strlen when possible#5192lygstate wants to merge 1 commit intojerryscript-project:masterfrom
Conversation
|
What about keeping |
jerry_sz_cesu8 is a macro for literal, |
So that refactoring ASCII out is a thing because for most/(maybe all) internal string is ASCII, and for ASCII the check function is much simpler. The macro give us future optimize string literal store, as |
|
Cesu8 is as efficient as ascii for checking, since the cpu branch predictor learns the simplest case. Two functions actually increase code size. |
db3a212 to
4bf1f07
Compare
OK, I do the following to achieve the same effect, to code changes reduced a lot
In summary jerry_string_sz preserved |
e7a63f4 to
215c086
Compare
80dba58 to
466caea
Compare
* Improve jerry_string_sz only accept UTF-8 string(that's a rare case accept CESU-8 in c/cpp code) * The document about jerry_string_sz only support ASCII(the fact is CESU-8 before this MR), update it to support UTF-8 after this MR * Improve all _sz function to take jerry_value_t that can construct from `jerry_string_sz` * Improve JERRY_ZSTR_ARG can only accept string literal(that's UTF-8) * Add function jerry_value_list_free to free a list of jerry_value_t * All call to jerry_string/jerry_string_cesu8 in core indeed are removed, so when there is no linkage to it, code size is saved The prototype of new/improved function/macros is: ```c jerry_value_t jerry_string_cesu8 (const jerry_char_t *buffer_p, jerry_size_t buffer_size); jerry_value_t jerry_string_utf8 (const jerry_char_t *buffer_p, jerry_size_t buffer_size); #define jerry_string_sz(str) jerry_string_utf8 (JERRY_ZSTR_ARG (str)) jerry_value_t jerry_error_sz (jerry_error_t error_type, const jerry_value_t message_sz); jerry_value_t jerry_throw_sz (jerry_error_t error_type, const jerry_value_t message_sz); jerry_value_t jerry_regexp_sz (const jerry_value_t pattern_sz, uint16_t flags); jerry_value_t jerry_object_delete_sz (const jerry_value_t object, const jerry_value_t key_sz); jerry_value_t jerry_object_get_sz (const jerry_value_t object, const jerry_value_t key_sz); jerry_value_t jerry_object_has_sz (const jerry_value_t object, const jerry_value_t key_sz); jerry_value_t jerry_object_set_sz (jerry_value_t object, const jerry_value_t key_sz, const jerry_value_t value); ``` JerryScript-DCO-1.0-Signed-off-by: Yonggang Luo luoyonggang@gmail.com
466caea to
9f05ccd
Compare
Closed: #4978
Closed: #4979
jerry_string_szThe prototype of new/improved function/macros is:
Rename jerry_port_log to jerry_port_log_buffer
Add buffer_size parameter for function jerry_port_log_buffer, so that jerry_port_log_buffer
won't need calculate strlen when printing
JerryScript-DCO-1.0-Signed-off-by: Yonggang Luo luoyonggang@gmail.com